package com.gomore.opple.data.remote.retrofit;

import com.gomore.opple.data.remote.bean.WrapperResponseEntity;
import com.gomore.opple.exception.ServerException;

import rx.functions.Func1;

/**
 * Company 上海勾芒科技有限公司.
 */
//拦截固定格式的公共数据类型Response<T>,判断里面的状态码
public class ServerResponseFunc<T> implements Func1<WrapperResponseEntity<T>, T> {
    @Override
    public T call(WrapperResponseEntity<T> response) {
        //对返回码进行判断，如果为非0，则证明服务器端返回错误信息了，便根据跟服务器约定好的错误码去解析异常
        if (response.getCode() != 0) {
            //如果服务器端有错误信息返回，那么抛出异常，让下面的方法去捕获异常做统一处理
            throw new ServerException(response.getCode(), response.getMessage());
        }
        //服务器请求数据成功，返回里面的数据实体
        return response.getData();
    }
}